//
//  SYJEmoticonTools.swift
//  weibo
//
//  Created by 孙英建 on 16/4/25.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

// 最多显示的列数
let emoticonMaxCol = 7
// 最多显示的行数
let emoticonMaxRow = 3
// 最多显示的表情个数
let emoticonMaxCount = emoticonMaxCol * emoticonMaxRow - 1


class SYJEmoticonTools: NSObject {

    
    
    static let sharedTools: SYJEmoticonTools = SYJEmoticonTools()
    
    
    // 读取表情的bundle文件
    lazy var emoticonBundle: NSBundle = {
       let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        return NSBundle(path: path)!
    }()
    
    
    
    // MARK: - 获取数组
    
    // 默认表情
    lazy var defaultEmoticon:[SYJEmoticonModel] = {
        return self.getEmoticons("default/")
        }()
    
    // Emoji表情
    lazy var emojiEmoticon:[SYJEmoticonModel] = {
        return self.getEmoticons("emoji/")
        }()
    
    // 浪小花表情
    lazy var lxhEmoticon:[SYJEmoticonModel] = {
        return self.getEmoticons("lxh/")
        }()

    // emoticon三维数组表情
    lazy var allEmoticons: [[[SYJEmoticonModel]]] = {
        return[
            self.getEmoticonGroup(self.defaultEmoticon),
            self.getEmoticonGroup(self.emojiEmoticon),
            self.getEmoticonGroup(self.lxhEmoticon)
        ]
    }()
    
    
    
    // 获取表情模型一维数组
    func getEmoticons(path: String) -> [SYJEmoticonModel]{
        let file = emoticonBundle.pathForResource("\(path)info.plist", ofType: nil)
        let array = NSArray(contentsOfFile: file!)
        
        // 定义临时数组字典转模型
        var temArr: [SYJEmoticonModel] = [SYJEmoticonModel]()
        
        for dict in array!{
            let emoticon = SYJEmoticonModel(dict: dict as! [String: AnyObject])
            emoticon.path = path
            temArr.append(emoticon)
        }
        
        return temArr
    }
    
    // 截取一维数组或得二维数组
    func getEmoticonGroup(emoticon: [SYJEmoticonModel]) -> [[SYJEmoticonModel]]{
        
        // 计算表情总共有多少页
        let pageCount = (emoticon.count + emoticonMaxCount - 1) / emoticonMaxCount
        
        // 临时数组保存一维数组
        var tempArr: [[SYJEmoticonModel]] = [[SYJEmoticonModel]]()
        
        for index in 0..<pageCount{
            // 位置
            let loc = index * emoticonMaxCount
            // 截取的长度
            var len = emoticonMaxCount
            if loc + len > emoticon.count{
                len = emoticon.count - loc
            }
            
            // 截取数组
            let range = NSMakeRange(loc, len)
            
            let emoticons = (emoticon as NSArray).subarrayWithRange(range) as! [SYJEmoticonModel]

            
            tempArr.append(emoticons)
        }
        return tempArr
    }
    
    
}













